package com.leon.learnenginespace.drools.dao;

import com.leon.learnenginespace.drools.pojo.*;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface RuleMapper {

    /**
     * 规则查询
     * @param tDrlRuleConfig
     * @return
     */
    List<TDrlRuleConfi> queryTdrlRule(TDrlRuleConfi tDrlRuleConfig);

    /**
     * 规则新增
     * @param tDrlRuleConfig
     * @return
     */
    int tDrlRuleConfigCreat(TDrlRuleConfi tDrlRuleConfig);

    Integer queryRuleCode(TDrlRuleConfi tDrlRuleConfi);

    /**
     * 规则修改
     * @param tDrlRuleConfig
     * @return
     */
    int tDrlRuleConfigUpdate(TDrlRuleConfi tDrlRuleConfig);

    int queryNCountCode(String code);

    /**
     * 保存新计数器
     * @param count
     * @return
     */
    Long insertNCountCode(TDrlNCount count);

    /**
     * 更新T_DRL_COUNT num+1，并获取num
     * @param tDrlNCount
     * @return
     */
    int tDrlCountUpdate(TDrlNCount tDrlNCount);

    /**
     * 创建规则模式
     * @param operationType
     * @param description
     * @param fieldId
     * @return
     */
    int tDrlRuleModelConfigCreate(Long id, String fieldPath, String operationType, String description, String fieldId);

    /**
     * 创建规则词条
     * @param ruleFieldConfig
     * @return
     */
    int tDrlRuleFieldConfigCreate(TDrlNRuleFieldConfig ruleFieldConfig);

    /**
     * 创建规则模式
     * @param ruleExpressionConfig
     * @return
     */
    int tDrlRuleEXConfigCreate(TDrlNRuleExpressionConfig ruleExpressionConfig);

    /**
     * 查找运算类型在字典数据中是否存在
     * @param tDrlDictionary
     * @return
     */
    int selectDicCode(TDrlDictionary tDrlDictionary);

    /**
     * 根据词条id查找词条路径
     * @param fieldId
     * @return
     */
    String queryFieldPath(String fieldId);

    /**
     * 查询字典
     * @param tDrlDictionary
     * @return
     */
    List<TDrlDictionary> queryDictionary(TDrlDictionary tDrlDictionary);
    /**
     * 规则内容查询
     * @param ruleConfig
     * @return String
     */
    String queryRuleContent(TDrlRuleConfi ruleConfig);
    /**
     * 规则未绑定参数查询
     * @param ruleConfig
     * @return String
     */
    List<TDrlRuleColumnConfig> queryRuleColumn(TDrlRuleConfi ruleConfig);

}